#ifndef __DHT11_H
#define	__DHT11_H



#include "stm32f1xx_hal.h"



/************************** DHT11 数据类型定义********************************/
typedef enum {
	DHT11_DATA_CHANGED,
	DHT11_DATA_NOT_CHANGE
} DHT11_DdtaStatus;

typedef struct
{
	uint8_t  humi_int;		//湿度的整数部分, 高8位
	uint8_t  humi_deci;	 	//湿度的小数部分, 低8位
	uint8_t  temp_int;	 	//温度的整数部分, 高8位
	uint8_t  temp_deci;	 	//温度的小数部分, 低8位
	uint8_t  check_sum;	 	//校验和
	float humidity;         //实际湿度
	float temperature;      //实际温度
	DHT11_DdtaStatus status;

} DHT11_Data_TypeDef;


/************************** DHT11 连接引脚定义********************************/

#define DHT11_Dout_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
#define DHT11_Dout_GPIO_PORT      GPIOA
#define DHT11_Dout_GPIO_PIN       GPIO_PIN_8



/************************** DHT11 函数宏定义********************************/
#define DHT11_Dout_Low()	  HAL_GPIO_WritePin(DHT11_Dout_GPIO_PORT, DHT11_Dout_GPIO_PIN, GPIO_PIN_RESET)
#define DHT11_Dout_High()     HAL_GPIO_WritePin(DHT11_Dout_GPIO_PORT, DHT11_Dout_GPIO_PIN, GPIO_PIN_SET)
#define DHT11_Data_IN()	      HAL_GPIO_ReadPin(DHT11_Dout_GPIO_PORT, DHT11_Dout_GPIO_PIN)



/************************** DHT11 函数声明 ********************************/
void DHT11_Init(void);
uint8_t DHT11_Read_TempAndHumidity(DHT11_Data_TypeDef* Data);
char* DHT11_TempAndHumidity_toString(DHT11_Data_TypeDef*, char*);
#endif /* __DHT11_H */







